﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using fadmin.Produto;

namespace fadmin
{
    public partial class frmNovoProduto : Form
    {
        String instaciaDoFormCliente;

        public frmNovoProduto()
        {
            InitializeComponent();
            instaciaDoFormCliente = "0";
        }

        public frmNovoProduto(string codigo)
        {
            InitializeComponent();
            instaciaDoFormCliente = codigo;
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            //Salva os dados do cliente            
            if (validarDados())
            {
                if (instaciaDoFormCliente.Equals("0"))
                {
                    try
                    {
                        ProdutoDTO dto = PreencheProduto();
                        ProdutoManager manager = new ProdutoManager();
                        manager.inserir(dto);
                        MessageBox.Show("Dados salvos com sucesso!", "Dados Salvos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        LimparCampos();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Houve um erro ao tentar salvar os dados, contacte o desenvolvedor" + ex.Message.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
                else
                {
                    ProdutoDTO dto = PreencheProduto();
                    ProdutoManager manager = new ProdutoManager();
                    manager.atualizar(dto);
                    MessageBox.Show("Dados atualizados com sucesso!", "Dados Salvos", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    this.Close();
                }
            }
        }

        private ProdutoDTO PreencheProduto()
        {
            ProdutoDTO dto = new ProdutoDTO();
            try
            {
                dto.codigo_produto = Convert.ToInt32(instaciaDoFormCliente);
                dto.nome = txtNome.Text;
                dto.descricao = txtDescricao.Text;
                dto.preco = Convert.ToDouble(txtPreco.Text);
                dto.situacao = txtSituacao.Text;
                dto.datacadastro = DateTime.Now;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Houve um erro ao tentar salvar os dados, contacte o desenvolvedor: " + ex.Message.ToString(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return dto;
        }

        private bool validarDados()
        {
            if (txtNome.Text.Trim().Equals(""))
            {
                errorProvider1.SetError(txtNome, "O Nome é obrigatório");
                return false;
            }
            else if (txtPreco.Text.Trim().Equals(""))
            {
                errorProvider2.SetError(txtPreco, "O Preço é obrigatório");
                return false;
            }
            else if (txtSituacao.Text.Trim().Equals(""))
            {
                errorProvider3.SetError(txtSituacao, "A situação é obrigatória");
                return false;
            }
            else
            {
                return true;
            }
        }

        private void frmNovoProduto_Load(object sender, EventArgs e)
        {
            if (Convert.ToInt32(instaciaDoFormCliente) > 1)
            {
                List<ProdutoDTO> produto = new List<ProdutoDTO>();

                ProdutoDTO dto = new ProdutoDTO();
                ProdutoDAO dao = new ProdutoDAO();
                dto.codigo_produto = Convert.ToInt32(instaciaDoFormCliente);
                produto = dao.consultar(dto);

                if (produto.Count() == 1)
                {
                    txtNome.Text = produto[0].nome.ToString();
                    txtPreco.Text = produto[0].preco.ToString("F").PadLeft(txtPreco.Mask.Length,'0'); ;
                    txtSituacao.Text = produto[0].situacao;
                    txtDescricao.Text = produto[0].descricao;
                    lblCodigo.Text = "Código do produto: " + Convert.ToString(produto[0].codigo_produto);
                    lblDataCadastro.Text = "Produto cadastrado desde: "+ Convert.ToString(produto[0].datacadastro);
                }

            }
            else
            {
                LimparCampos();
            }
        }

        private void LimparCampos()
        {
            txtNome.Text = "";
            txtPreco.Text = "";
            txtSituacao.Text = "";
            txtDescricao.Text = "";
            lblCodigo.Text = "";
            lblDataCadastro.Text = "";
        }

        private void voltarEscToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmNovoProduto_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode.ToString() == "Escape")
            {
                this.Close();
            }
        }


    }
}
